#include <stdio.h>
#include "ofc/DTable.h"
#include "ofc/DInt.h"

int main(int argc, char *argv[])
{
  DTable *tab1 = [DTable alloc];
  DTable *tab2 = [DTable new  ];
  DInt   *nr;
  int     c,r;

  [tab1 init :5 :4];                   // Init the table with 5 columns and 4 rows

  printf("Length (%ld), columns(%d) and rows(%d) for table1.\n", [tab1 length], [tab1 columns], [tab1 rows]);

  for (c = 0; c < [tab1 columns]; c++) // Fill the whole table with integers
  {
    for (r = 0; r < [tab1 rows]; r++)
    {
      nr = [DInt new]; 
      
      [nr set :(c*r)];

      [tab1 set :c :r :nr];
    }
  }

  nr = [tab1 get :4 :3];
  printf("Element (4,3) has value:%d.\n", [nr get]);
  

  
  [tab2 columns :4];                  // Set the dimensions of table2
  [tab2 rows    :4];
  
  nr = [DInt alloc]; [nr init :7];
                                      // Set the object in table2
  [tab2 set :0 :0 :nr];
  [tab2 set :1 :1 :nr];
  [tab2 set :2 :2 :nr];
  [tab2 set :3 :3 :nr];

  printf("Table2 %s object nr7.\n", ([tab2 has :nr] ? "has" : "has not"));

  printf("Table2 has object nr7 %ld times.\n", [tab2 count :nr]);
  
  [tab1 free];                         // Cleanup
  [tab2 shallowFree];                  // Cleanup only table, nr is repeated present
  [nr   free];

  return 0;
}

